import axios, {
  type AxiosResponse,
  type InternalAxiosRequestConfig,
} from 'axios'

// 创建 axios 实例
const service = axios.create({
  baseURL: '', // 从环境变量文件中获取自定义的环境变量值
  timeout: 10000,
})

// 请求拦截
service.interceptors.request.use((config: InternalAxiosRequestConfig) => {
  // 从 sessionStorage 中获取保存用户登录成功的 token
  const token = sessionStorage.getItem('token')

  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }

  return config
})

// 响应拦截
service.interceptors.response.use(
  (response: AxiosResponse<ServerResponse, any>) => {
    const { code, message, data } = response.data

    if (code === 200) {
      return data
    }

    // TODO::: token过期问题

    return Promise.reject(new Error(message))
  },
)

export default service
